﻿using System;
using System.Collections.Generic;
using System.Linq;
using WPFServices.Model;

namespace WPFServices.Services
{
    public static class CustomersService
    {
        public static IList<ModelCustomers> GetListCustomer()
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var cRet = db.CUSTOMERS.Select(x => new ModelCustomers
                    {
                        IDCus = x.ID_CUS,
                        NameCus = x.NAME_CUS,
                        ADDRESS = x.ADDRESS,
                        PHONE = x.PHONES
                    }).ToList();
                    return cRet;
                }
            }
            catch (Exception)
            {
                
                throw new Exception("Không thể lấy danh sách người dùng");
            }

        }
        public static int InsertCustomer(ModelCustomers customer)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var c = new CUSTOMER
                                {NAME_CUS = customer.NameCus, ADDRESS = customer.ADDRESS, PHONES = customer.PHONE};
                    db.CUSTOMERS.Add(c);
                    db.SaveChanges();
                    return c.ID_CUS;
                }
            }
            catch (Exception)
            {
                
               throw new Exception("Không thể lấy danh sách người dùng");
            }

        }

        public static int GetOrGreateDefaultCustomer()
        {
            using (var db = new VLXDKH_QLKEntities())
            {
                var defaultCustomer = db.CUSTOMERS.Where(cus => cus.NAME_CUS == "Default").Select(cus => cus).FirstOrDefault();
                if (defaultCustomer == null)
                {
                    var newCus = new ModelCustomers { NameCus = "Default", ADDRESS = "Default", PHONE = "Default" };
                    return InsertCustomer(newCus);
                }
                return defaultCustomer.ID_CUS;
            }
        }

        public static CUSTOMER GetCustomerByName(string cusName)
        {
            using (var db = new VLXDKH_QLKEntities())
            {
                return db.CUSTOMERS.FirstOrDefault(cus => cus.NAME_CUS == cusName);
            }
        }

        public static void UpdateCustomer(CUSTOMER customer)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var c = db.CUSTOMERS.FirstOrDefault(x => x.ID_CUS == customer.ID_CUS);
                    if (c != null)
                    {
                        c.NAME_CUS = customer.NAME_CUS;
                        c.ADDRESS = customer.ADDRESS;
                        c.PHONES = customer.PHONES;
                    }
                    db.SaveChanges();
                }
            }
            catch (Exception)
            {

                throw new Exception("Không thể cập nhật thông tin người dùng");
            }
        }

    }
}
